import request from '@/utils/request'
import { JsonData } from '@/api/meeting'

/**
 * 活动类型枚举
 */
export enum ActivityType {
  ALL = 'all',
  DIGITAL = 'digital',
  PRODUCT = 'product',
  SAFETY = 'safety',
  SCIENCE = 'science',
  ECOLOGY = 'ecology'
}

/**
 * 活动信息接口
 */
export interface Activity {
  id: number
  pubId: number
  name: string           // 活动名称
  type: ActivityType     // 活动类型
  description: string    // 活动描述
  time: string         // 活动时间
  img: string          // 活动图片
  url: string          // 文件下载链接
}

/**
 * 活动列表请求参数
 */
export interface ListActivityRequest {
  page: number          // 当前页码
  size: number          // 每页数量
  name?: string        // 活动名称，用于搜索
  type?: ActivityType  // 活动类型筛选
  year?: number        // 年份筛选
}

/**
 * 活动创建/更新请求接口
 */
export interface ActivityCreateRequest {
  name: string
  type: ActivityType
  description: string
  time: string
  img: string
  url?: string
}

/**
 * 获取活动列表
 * @param params 查询参数
 * @returns 活动列表数据
 */
export const getActivityList = (params: ListActivityRequest) => {
  return request.post<JsonData>('/api/activity/list', params)
}

/**
 * 上传活动图片
 * @param file 图片文件
 * @returns 上传后的文件URL
 */
export const uploadActivityImage = (file: File) => {
  const formData = new FormData()
  formData.append('file', file)
  return request.post<string>('/api/activity/upload_img', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 上传活动文件
 * @param file 文件
 * @returns 上传后的文件URL
 */
export const uploadActivityFile = (file: File) => {
  const formData = new FormData()
  formData.append('file', file)
  return request.post<string>('/api/activity/upload_file', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 删除活动文件
 * @param activityId 活动ID
 */
export const deleteActivityFile = (activityId: number) => {
  return request.delete<JsonData>(`/api/activity/${activityId}/file`)
}

/**
 * 添加新活动
 * @param data 活动数据
 * @returns 创建的活动信息
 */
export const addActivity = (data: ActivityCreateRequest) => {
  return request.post<JsonData>('/api/activity/add', data)
}

/**
 * 更新活动信息
 * @param id 活动ID
 * @param data 更新的数据
 * @returns 更新后的活动信息
 */
export const updateActivity = (id: number, data: ActivityCreateRequest) => {
  return request.post<JsonData>(`/api/activity/${id}`, data)
}

/**
 * 删除活动
 * @param id 活动ID
 */
export const deleteActivity = (id: number) => {
  return request.delete<JsonData>(`/api/activity/${id}`)
}

/**
 * 获取活动详情
 * @param id 活动ID
 * @returns 活动详细信息
 */
export const getActivityDetail = (id: number) => {
  return request.get<Activity>(`/api/activity/${id}`)
}

/**
 * 批量删除活动
 * @param ids 活动ID数组
 */
export const batchDeleteActivities = (ids: number[]) => {
  return request.delete<JsonData>('/api/activity/batch', { data: ids })
}


